package com.cvte.shop.service;

import com.cvte.csb.core.interfaces.vo.RestResponse;
import com.cvte.shop.entity.UniversalBasicCondition;
import com.cvte.shop.entity.UniversalDefinedCondition;
import com.cvte.shop.entity.UniversalMethodResult;
import com.cvte.csb.jdbc.mybatis.service.IBaseService;
import com.cvte.shop.entity.UniversalResultFields;
import org.springframework.web.bind.annotation.PathVariable;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 服务类
 *
 * @author inv
 * @since 2020-08-04
 */
public interface UniversalMethodResultService extends IBaseService<UniversalMethodResult> {

    /**
     * 初次生成结果集
     * @param tableId
     * @param result        生成的sql
     */
    void createMethodResult(String tableId,String result,String viewId);

    /**
     * 创建初始化sql
     * @param fieldsList    字段列表
     * @param tableId       表的id
     * @param viewId        视图的id
     */
    void createInitTableSql(List<UniversalResultFields> fieldsList, String tableId, String viewId);

    /**
     * 创建初始化sql
     * @param fieldsList    字段列表
     * @param tableId       表的id
     * @param viewId        视图的id
     */
    void createInitViewSql(List<UniversalResultFields> fieldsList, String tableId, String viewId);

    /**
     * 核对sql
     * @param resultSet 结果集
     */
    void checkSql(String resultSet);

    /**
     * 通用方法
     * @param methodName
     * @param viewId
     * @return
     */
    RestResponse universalMethod(String viewId, HttpServletRequest request);


    /**
     * 查询组成最后结果的结果集
     * @param tableId
     * @return
     */
    String getResultResultSet(String tableId);

    /**
     * 查询自定义条件
     * @param tableId
     * @param viewId
     * @return
     */
    List<UniversalDefinedCondition> getDefinedCondition(String tableId, String viewId);

    /**
     * 查询基础条件
     * @param tableId
     * @param viewId
     * @return
     */
    List<UniversalBasicCondition> getBasicCondition(String tableId, String viewId);


}
